const localData = localStorage.getItem('pz_v3pz')
const state = localData
    ? localData.menu
    : {
          isCollapse: false,
          selectMenu: [],
          routerList: [],
          menuActive: '1-1',
      }
// 用于同步修改状态
const mutations = {
    // 折叠菜单状态
    collapseMenu(state) {
        state.isCollapse = !state.isCollapse
    },
    // 当前选中的菜单项（标签页）
    addMenu(state, payload) {
        //数据去重
        if (state.selectMenu.findIndex((item) => item.path === payload.path) === -1) {
            state.selectMenu.push(payload)
        }
    },
    // 移除指定的菜单项（标签页）
    closeMenu(state, payload) {
        // 找到数据的索引
        const index = state.selectMenu.findIndex((val) => val.name === payload.name)
        // 通过索引删除数据指定元素
        state.selectMenu.splice(index, 1)
    },
    // 动态路由处理
    dynamicMenu(state, payload) {
        // vite中，通过glob导入文件
        const modules = import.meta.glob('../views/**/**/*.vue')
        // console.log('modules', modules)
        function routerSet(router) {
            router.forEach((route) => {
                // 构建组件路由：判断没有子菜单，拼接路由数据；
                if (!route.children) {
                    const url = `../views${route.meta.path}/index.vue`
                    //动态分配组件： 拿到获取的vue组件
                    route.component = modules[url]
                } else {
                    // 递归处理子路由：有子菜单，递归
                    routerSet(route.children)
                }
            })
        }
        // 处理传入的路由配置
        routerSet(payload)
        // 更新状态中的路由列表
        state.routerList = payload
    },
    updataMenuActive(state, payload) {
        state.menuActive = payload
    },
}

export default {
    state,
    mutations,
}
